1. Field of the Invention
The present invention is directed to computer system resource management, and more particularly, to resources management for a group of objects or processes in a computer system, where each object or process has individual resources limitations.
2. Related Art
A typical computer system has a wide variety of resources that may be utilized by its consumers. These resources are typically used in order to service the needs of the users of the computer system, for example, to enable functionality of a web server or a virtual private server, to provide data from a database to various users, to provide user access to a network, etc. Normally, consumers of the resources of the computer system are processes or threads being executed in a computer system, which require for their operation shares of CPU time, memory, operating system objects, semaphores, disk access, network access, etc. Consumers of the resources may also be a group of processes and applications, virtual private servers, users, groups of users, system services and daemons, etc.
Normally, the process of allocating resources between consumers is handled by a specific code within the operating system, usually referred to as a planner or scheduler. The scheduler may be separated out into its own subroutine, or it may be spread out in various places in the code of the operating system and the user programs. A set of schedulers for different kinds of resources or different scheduling algorithms can also be used. Upon allocation of a particular resource, the scheduler takes into account a number of aspects—for example, current utilization of that resource by a consumer, recent requests for that resource's use, system load, history of that resource's use, limits imposed on the use of that resource for a particular consumer and for all the consumers, service level agreement (SLA) guarantees for that particular consumer or user, operating system requirements, priority among the various processes and users, penalty introduced during reallocation of resources, etc. A request to the scheduler for reallocation of the resource can originate both at the moment when the consumer attempts an operation on that particular resource, and periodically, using predictive mechanisms that address prospective resource use. A number of algorithms exist for managing resource allocation. For example, classical scheduling algorithms for CPU time can include both dynamic and static priority schemes, round robin schemes, multiple queues, guaranteed scheduling, shortest job first, lottery scheduling, real time scheduling, two-level scheduling, and so on.
Most modern operating systems have a built-in mechanism for managing quantitative resource consumption level. Examples of such mechanisms are “rlimits” in UNIX type operating systems, or a scheme of prioritizing execution of threads and processes in Microsoft Windows. The limitations imposed by these mechanisms can be placed on a single object that consumes resources, for example, on a process or a thread, but usually not on a group of processes.
Thus, the present invention is directed to a method of solving the problem of managing resource use on a group basis in addition to managing resources on an individual process basis.